Embodiments herein generally relate to image data storage repositories and, more particularly, to embodiments of an image data storage system and an associated image data storage method which store, on one or more disk drives in a disk drive array, original image data for different images and also, for each image, multiple resolution levels of compressed image data with each level representing a progressively lower resolution copy of the image.
Modern image data storage repositories use disk drive arrays, such as redundant arrays of independent disks (RAID), to store original image data for millions of different images and also multiple resolution levels of compressed image data for each image with each level representing a progressively lower resolution copy of the image. Such repositories allow users to browse through “thumbnail” images, having the lowest resolution level, and to select a specific image in order to view the image at a higher resolution level and/or to zoom-in on a portion of the specific image. Traditionally, storage and retrieval of image data on the disk drives in RAIDs is accomplish using caching and de-segmentation techniques. Unfortunately, increases in the number of images being stored as well as increases in the number of resolution levels of image data for each image being stored have resulted in a corresponding increase in the time required for image data retrieval (i.e., the access time).
In view of the foregoing, disclosed herein are embodiments of an image data storage system and an associated image data storage method. The embodiments store, on one or more disk drives (e.g., in a disk drive array), original image data for different images as well as multiple resolution levels of compressed image data for each image. The embodiments further manage placement of this image data within sectors on each disk drive in order to improve access time to the most commonly accessed resolution level of image data. Specifically, the lowest resolution level image data for multiple different images (i.e., “thumbnail” copies of multiple different images) are grouped together and stored within sectors closest to the center that may be accessed fastest. Progressively higher resolution levels of image data for these same images can also be grouped together and stored sequentially from a first track closest to the center to a last track closet to an outer edge. Alternatively, all higher resolution levels of image data for any single image can be grouped together and stored within a same sector as close to the center as possible.
More particularly, disclosed herein are embodiments of an image data storage system. The system embodiments can comprise a computer, disk drive array, and a disk drive array controller in communication with both the computer and the disk drive array (e.g., a redundant array of independent disks (RAID), such as a RAID-5).
The computer can incorporate a data compressor. The data compressor can receive original image data representative of multiple different images and can compress that original image data in order to generate, for each image, multiple resolution levels of compressed image data with each level representative of a progressively lower resolution copy of the image. For example, by using a JPEG 2000 compression standard, the image data compressor can generate, for each image at each level, compressed image data in the form of a wavelet coefficient that is a lower resolution copy of the image and can also generate additional information (e.g., three additional wavelet coefficients) that can be used to decompress that compressed image data. It can further generate the multiple resolution levels of compressed image data such that the resolution of image data in each progressively lower resolution level is approximately one-half the resolution of image data in a next higher resolution level image and such that the lowest resolution level image data has a longest dimension between approximately 120 and 150 pixels and uses approximately 2 bits/pixel.
The disk drive array can comprise one or more disk drives. Each disk drive can have a center and multiple tracks encircling the center. Each track can be sub-divided into multiple sectors. The disk drive array can receive, from the computer, the original image data for all the images, the multiple resolution levels of compressed image data for each image, and the additional information associated with each image at each level. The disk drive array can then store the original image data and the multiple resolution levels of compressed image data for all of the images such that, on any given disk drive, sectors positioned on a track closest to the center store lowest resolution level image data and other sectors positioned on tracks farther from the center store higher resolution level image data. The disk drive array can further store the original image data and the multiple resolution levels of compressed image data for all of the images such that, on the any given disk drive, progressively higher resolution levels of image data are stored from a first track closest to the center to a last track closet to an outer edge of the given disk drive or, alternatively, such that, on the any given disk drive, all higher resolution levels of image data for any single image are stored within a same sector. Finally, the disk drive array can store any additional information associated with any one resolution level of compressed image data for a given image in a same track and sector as a next higher resolution level of compressed image data for the given image.
In one embodiment of the system, the disk drive array controller can manage the entire process by which the image data is stored within the disk drive array. That is, the disk drive array controller can manage both image data distribution across multiple disk drives in the array, if applicable, and also image data placement within the multiple tracks and the multiple sectors of each disk drive, as described above. Alternatively, the computer can comprise an operating system that manages image data distribution across multiple disk drives in the array, if applicable, and the controller can manage image data placement within the multiple tracks and the multiple sectors of each disk drive.
Also disclosed herein are embodiments of an image data storage method. The method embodiments can comprise receiving, by a computer, original image data representative of multiple different images. This original image data can then be compressed, by a data compressor in the computer, in order to generate, for each image, multiple resolution levels of compressed image data with each level representative of a progressively lower resolution copy of the image. For example, a JPEG 2000 compression standard can be used by the data compressor to generate, for each image at each level, compressed image data in the form of a wavelet coefficient that is a lower resolution copy of the image and also additional information (e.g., three additional wavelet coefficients) for use in decompressing the compressed image data, if necessary.
Next, the method embodiments can comprise receiving, by a disk drive array from the computer, the original image data for all of the images, the multiple resolution levels of compressed image data for each image, and the additional information associated with each image at each level. This disk drive array can comprise one or more disk drives with each disk drive having a center and multiple tracks encircling the center and with each track sub-divided into multiple sectors. For example, the disk drive array can comprise a redundant array of independent disks (RAID).
The method embodiments can then comprise storing, by the disk drive array, the original image data for all the images and also the multiple resolution levels of compressed image data for each image such that, on any given disk drive, sectors positioned on a track to the center store lowest resolution level image data and other sectors positioned on tracks farther from the center store higher resolution level image data. This storing process can further be performed such that, on the any given disk drive, progressively higher resolution levels of image data are stored from a first track closest to the center to a last track closet to an outer edge of the given disk drive or, alternatively, such that, on the any given disk drive, all higher resolution levels of image data for any single image are stored within a same sector. Finally, this storing process can be performed such that any additional information associated with any one resolution level of compressed image data for a given image is stored in a same track and sector as a next higher resolution level of compressed image data for the given image.
In one embodiment of the method, the entire process by which the image data is stored within the disk drive array can be managed by a disk drive array controller. Specifically, this method embodiment can comprise managing, by a disk drive array controller in communication with the computer and the disk drive array, both image data distribution across multiple disk drives in the array, if applicable, and also image data placement within the multiple tracks and the multiple sectors of each disk drive, as described above. Alternatively, in another embodiment of the method the process by which the image data is stored within the disk drive array can be managed by both computer operating system and a disk drive array controller in combination. Specifically, this method embodiment can comprise managing, by the operating system of the computer, image data distribution across multiple disk drives of the array, if applicable; and managing, by a disk drive array controller in communication with the computer and the disk drive array, image data placement within the multiple tracks and the multiple sectors of each disk drive, as described above.
These and other features are described in, or are apparent from, the following detailed description.